﻿@using DatabaseLibrary;
@* Quitar esta sección si se utilizan agrupaciones *@
@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
}

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Crear empresa";

    var nit = string.Empty;
    var nombre = string.Empty;
    var direccion = string.Empty;

    Validation.Add("nit", Validator.StringLength(maxLength: 15, errorMessage: "El texto supera el maximo permitido de 15 caracteres."));
    Validation.Add("nombre", Validator.StringLength(maxLength: 100, errorMessage: "El texto supera el maximo permitido de 100 caracteres."));
    Validation.Add("direccion", Validator.StringLength(maxLength: 100, errorMessage: "El texto supera el maximo permitido de 100 caracteres."));

    Validation.Add("nit", Validator.Integer("Este campo debe contener solo numeros."));   
    
    // Implementacion de seguridad
    WebSecurity.RequireAuthenticatedUser();

    if (IsPost)
    {
        nit = Request.Form["nit"];
        nombre = Request.Form["nombre"];
        direccion = Request.Form["direccion"];

        if (nit.IsEmpty())
        {
            ModelState.AddError("nit", "El campo nit no debe estar vacio.");
        }            

        if (nombre.IsEmpty())
        {
            ModelState.AddError("nombre", "El campo nombre no debe estar vacio.");
        }

        if (direccion.IsEmpty())
        {
            ModelState.AddError("direccion", "El campo direccion no debe estar vacio.");
        }

        if (Validation.IsValid())
        {
            Empresa Obj_empresa = new Empresa();
            Obj_empresa.Objempresa.nit_empresa = nit;

            var lista = Obj_empresa.consultar(1);
            
            if (lista.Count  == 0)
            {
                Obj_empresa.Objempresa.estado = true;

                lista = Obj_empresa.consultar(1);
                
                if (lista.Count  == 0)
                {                                
                    ServicioGenerico<empresa> servicio = new ServicioGenerico<empresa>();
                    servicio.entidad.nit_empresa = nit;
                    servicio.entidad.nombre = nombre;
                    servicio.entidad.direccion = direccion;
                    servicio.entidad.estado = true;

                    EstadoTransaccion resultado = servicio.crearNuevo();

                    if (EstadoTransaccion.ERRONEO.Equals(resultado))
                    {
                        ModelState.AddError("errorGeneral", servicio.mensaje);
                    }
                    else
                    {
                        ModelState.AddError("errorGeneral", servicio.mensaje);
                        Response.Redirect("listarEmpresa.cshtml");
                    }                
                }
                else 
                {
                    ModelState.AddError("errorGeneral", "Ya existe una empresa con el nit " + nit);                        
                }
            } else {
                ModelState.AddError("errorGeneral", "Ya existe una empresa con el nit " + nit);
            }                   
        }
    }
    }

@if (!User.IsInRole("Admin"))
{
    ModelState.AddError("errorGeneral", "El usuario: " + User.Identity.Name + " NO tiene permisos sobre este formulario.");
    @Html.ValidationMessage("errorGeneral")
}
else
{    
    <form method="post">
        @AntiForgery.GetHtml()
        <fieldset>
            <legend>Formulario de registro</legend>
            <ol>
                <li class="email">
                    <label for="nit" @if (!ModelState.IsValidField("nit"))
                                     {<text>class="error-label"</text>}>
                        Nit de la empresa</label>
                    <input type="text" id="nit" name="nit" maxlength="15" value="@nit" @Validation.For("nit")/>
                    @Html.ValidationMessage("nit")
                </li>
                <li class="email">
                    <label for="nombre" @if (!ModelState.IsValidField("nombre"))
                                        {<text>class="error-label"</text>}>
                        Nombre de la empresa</label>
                    <input type="text" id="nombre" name="nombre" maxlength="100" value="@nombre" @Validation.For("nombre")/>
                    @Html.ValidationMessage("nombre")
                </li>
                <li class="email">
                    <label for="direccion" @if (!ModelState.IsValidField("direccion"))
                                           {<text>class="error-label"</text>}>
                        Direccion de la empresa</label>
                    <input type="text" id="direccion" name="direccion" maxlength="100" value="@direccion"  @Validation.For("direccion")/>
                    @Html.ValidationMessage("direccion")
                </li>
                <li>
                    @Html.ValidationMessage("errorGeneral")
                </li>
            </ol>
            <input type="submit" value="Crear" />
        </fieldset>
    </form>
}



